#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <climits>
#define int long long 
#define x first 
#define y second 
using namespace std ;
typedef pair<int,int> PII;
const int N = 1e5 + 10;
int a[N];
PII p[N];
int minTime(int n, vector<int>& pos)
{
     sort(pos.begin(),pos.end());
     int maxpos = pos[0];
     int time = 0;
     int m = 0;
     for(auto &c : pos)
     {
        if(maxpos <= c + m)
        {
            time ++;
            maxpos = c + m ;
            m++;
        }
     }
     return time -1 ;
}
void solve()
{
    int n;  
    cin >> n;  
      
    vector<int> pos(n);  
    for (int i = 0; i < n; ++i) {  
        cin >> pos[i];  
    }  
    int cnt = minTime(n, pos);  
    cout << cnt << endl;  
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr),cout.tie(nullptr);
    int t = 1;
    //cin >> t;
    while(t -- ) solve();
    return 0;
}